There are a continually increasing number of terminals and mobile devices in use today, such as smart phones, Personal Digital Assistants (PDAs) with wireless communication capabilities, personal computers, self-service kiosks and two-way pagers/communication devices. Software applications which run on these devices increase their utility. For example, a smart phone may include an application which retrieves the weather for a range of cities, or a PDA may include an application that allows a user to shop for groceries. These software applications take advantage of the connectivity to a network in order to provide timely and useful services to users. However, due to the restricted resources of some devices, and the complexity of delivering large amounts of data to the devices, developing and maintaining software applications tailored for a variety of devices remains a difficult and time-consuming task.
Mobile communication devices are primarily configured to communicate with Web-based applications, such as service-oriented applications, through Web browsers and/or native applications. Browsers have the advantage of being adaptable to operate on a cross-platform basis for a variety of different devices, but have a disadvantage of requesting pages (screen definitions in HTML) from the application, which hinders the persistence of data contained in the screens. A further disadvantage of browsers is that the screens are rendered at runtime, which can be resource intensive. Native applications have the advantage of being developed specifically for the type of mobile device, thereby providing a relatively optimized application program for each runtime environment. However, native applications have a disadvantage of not being platform independent, thereby necessitating the development of multiple versions of the same application, as well as being relatively large in size, thereby taxing the memory resources of the mobile device. Further, application developers need experience with programming languages such as Java™ and C++ to construct these hard-coded native applications. There is a need for application development environments that can assist in the development of applications for selected devices and terminals with their respective runtime environment, as well as being capable of assisting the selection from a variety of back-end data sources.
Developing applications on a development platform (e.g. an application development environment executing on one computer) for execution on one or more other target platforms (e.g. various wireless devices) often requires that the development platform be capable of simulating one or more aspects of the target platform. For example, when defining a visual interface for the application, it is desired to be able to render the visual interface on the development platform as it would appear on the target platform. However, in some cases the visual interface may only be approximated by the development platform.
A need therefore exists for improved systems and methods for providing a component-based application development environment that obviate or mitigate at least some of the above-noted disadvantages.
It will be noted that throughout the appended drawings, like features are identified by like reference numerals.